/**
 * ============================ 前端必回的一个模式: 发布订阅模式 ======================
 *  node中非常常用的典型模块 events
 */

// 发布定于 on 订阅 emit发布  off取消订阅 once 绑定一次
const EventEmitter = require("./3.events");
const events = new EventEmitter

// nextTick 里面可以解决异步调用问题, 方式优于 promise.then
// process.nextTick(() => {
//   events.emit("女孩失恋了", "boy")
// })

const cry = function (name) {
  console.log("哭", name);
}

events.on("女孩失恋了", cry)
events.on("女孩失恋了", function (name) {
  console.log("吃", name);
})
// events.once("女孩失恋了", function (name) {
//   console.log("逛街", name);
// })
//
// events.off("女孩失恋了", cry)
events.emit("女孩失恋了", "boy") // 执行完毕后,就将这个函数移除掉了, 下次不会再继续触发了.
events.emit("女孩失恋了", "boy")

